package com.triones.api.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import lombok.experimental.Accessors;

import java.math.BigDecimal;

/**
 * 银行卡交易明细
 */
@TableName(value = "tr_bank_card_txn")
@Data
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class BankCardTxnDO {
    /**
     * 主键ID
     */
    @TableId(value = "id")
    private Long id;
    /**
     * 用户ID
     */
    private Long uid;
    /**
     * 创建时间(2022-03-18T08:43:28)
     */
    private String createAt;
    /**
     * 卡ID
     */
    private String cardId;
    /**
     * 交易ID
     */
    private String transactionId;
    /**
     * 交易类型
     */
    private String transactionType;
    /**
     * 金额
     */
    private String amount;
    /**
     * 可用交易额度
     */
    private String availableTransactionLimit;
    /**
     * 额度流向。transfer_in：增加；transfer_out：减少；unlimited：不限
     */
    private String capitalFlows;
    /**
     * 卡本币
     */
    private String cardCurrency;
    /**
     * 总变动金额
     */
    private String changeAmount;
    /**
     * 手续费金额
     */
    private String feeAmount;
    /**
     * 掩码卡号
     */
    private String maskCardNo;
    /**
     * Enum: "virtual_card" "physical_card"
     卡介质。值： virtual_card虚拟卡；physical_card实体卡。
     */
    private String cardFormFactor;
    /**
     * 交易额度模式。txn：仅交易金额； txn_fee：含交易金额和手续费
     */
    private String txnLimitMethod;
    /**
     * 会员ID；如涉及matrix产品，返回对应的连接会员信息
     */
    private String memberId;
    /**
     * Matrix账户ID
     */
    private String matrixAccount;
    /**
     * 卡类型。share： 共享卡； recharge： 常规卡
     */
    private String cardType;
    /**
     * 原始交易ID
     */
    private String originTransactionId;
    /**
     * 商户请求ID
     */
    private String requestId;
    /**
     * 状态 "pending" "authorized" "succeed" "failed" "void" "processing"
     */
    private String status;
    /**
     * 状态码
     */
    private String code;
    /**
     * 状态描述
     */
    private String msg;
    /**
     * 商户类别码
     */
    private String mcc;
    /**
     * 授权码
     */
    private String authCode;
    /**
     * 结算状态 Enum: "Unsettled" "Settled"
     */
    private String settleStatus;
    /**
     * 交易金额
     */
    private String transactionAmount;
    /**
     * 交易币种
     */
    private String transactionCurrency;
    /**
     * 交易本金变动账户。member：会员光子易账户；matrix：Matrix账户；card：常规卡账户
     */
    private String txnPrincipalChangeAccount;
    /**
     * 交易本金预授权金额
     */
    private String txnPrincipalChangeAmount;
    /**
     * 交易本金变动币种
     */
    private String txnPrincipalChangeCurrency;
    /**
     * 交易本金已结算金额
     */
    private String txnPrincipalChangeSettledAmount;
    /**
     * 结算价差变动账户。member：会员光子易账户；matrix：Matrix账户；card：常规卡账户
     */
    private String settleSpreadChangeAccount;
    /**
     * 结算价差变动币种
     */
    private String settleSpreadChangeCurrency;
    /**
     * 手续费扣费账户。member：会员光子易账户；matrix：Matrix账户；card：常规卡账户
     */
    private String feeDeductionAccount;
    /**
     * 手续费扣费金额
     */
    private String feeDeductionAmount;
    /**
     * 手续费扣费币种
     */
    private String feeDeductionCurrency;
    /**
     * 手续费扣费金额明细。transactionFeeAmount：交易手续费金额；crossBroadFeeAmount：跨境手续费金额；conversionFeeAmount：汇率转换费金额；refundFeeAmount：退款手续费金额；voidFeeAmount：撤销手续费金额；gatewayFeeAmount：网关手续费金额；authFailedFeeAmount：失败交易手续费金额；fundInFeeAmount：汇入手续费金额
     */
    private String feeDetailJson;
    /**
     * 手续费返还账户。member：会员光子易账户；matrix：Matrix账户；card：常规卡账户
     */
    private String feeReturnAccount;
    /**
     * 手续费返还金额
     */
    private String feeReturnAmount;
    /**
     * 手续费返还币种
     */
    private String feeReturnCurrency;
    /**
     * 手续费返还金额明细。transactionFeeReturnAmount：交易手续费退回金额；crossBroadFeeReturnAmount：跨境手续费退回金额；conversionFeeReturnAmount：汇率转换费退回金额；gatewayFeeReturnAmount：网关手续费返还金额；refundFeeReturnAmount：退款手续费返还金额
     */
    private String feeReturnDetailJson;
    /**
     * 到账账户。member：会员光子易账户；matrix：Matrix账户；card：常规卡账户
     */
    private String arrivalAccount;
    /**
     * 到账金额
     */
    private String arrivalAmount;
    /**
     * 商户名称
     */
    private String merchantNameLocation;
    /**
     * 商户所在国家
     */
    private String merchantLocation;
    /**
     * 更新时间(2022-03-18T08:43:28)
     */
    private String updatedAt;
    /**
     * 交易结算状态
     */
    private String transactionStatus;
    /**
     * 银行卡编号
     */
    private String cardNo;
    /**
     * 系统手续费扣费币种
     */
    private String sysFeeDeductionCurrency;
    /**
     * 系统手续费扣费金额
     */
    private BigDecimal sysFeeDeductionAccount;
}
